package design.graduation.novelsystem.service;

import com.baomidou.mybatisplus.extension.service.IService;
import design.graduation.novelsystem.model.domian.Menu;
import design.graduation.novelsystem.model.dto.DataGridView;
import design.graduation.novelsystem.model.vo.MenuVo;

import java.util.List;

/**
 * @author: 洪少尉
 * @Date: 2020/4/14 02:53
 * @Description: 
 */
public interface MenuService extends IService<Menu>{

	/**
	 * //根据管理员ID去查询权限编码的集合
	 * @param adminId 管理员ID
	 * @return 权限编码的集合
	 */
	List<String> queryPermissionCodesByAdminId(Integer adminId);

	/**
	 * //根据当前管理员权限查询可用的登录目录
	 * @return 可用的登录目录
	 */
	Object getIndexMenu();

	/**
	 * 通过id查询普通管理员的菜单
	 * @param id 管理员id
	 * @return 菜单
	 */
	List<Menu> queryAllMenu(Integer id);

	/**
	 * 返回超级管理员菜单
	 *@return  超级管理员菜单
	 */
	List<Menu> queryAllMenu();

	/**
	 * 菜单表单数据
	 * @param menuVo 查询条件
	 * @return Menu数据
	 */
	DataGridView queryAllMenuAndPermission(MenuVo menuVo);

	/**
	 * 保存菜单
	 * @param menu 菜单信息
	 * @return true/false
	 */
	boolean saveMenu(Menu menu);

	/**
	 * 查询排序码的最大值
	 * @return 当前数据库表中排序码的最大值
	 */
	Integer queryMenuMaxSortCode();

	/**
	 * 删除时用于查询，当前菜单是否还有子菜单或权限
	 * @param id 菜单id
	 * @return 子菜单或权限个数
	 */
	Integer queryMenuChildrenCountById(Integer id);
}
